package com.linkstec.musiccloud.service;

import java.util.List;

import com.linkstec.musiccloud.pojo.ListSongUser;
import com.linkstec.musiccloud.pojo.ListenTime;
import com.linkstec.musiccloud.pojo.Song;
import com.linkstec.musiccloud.util.Page;
import com.linkstec.musiccloud.vo.SongVo;
import com.linkstec.musiccloud.vo.SongVos;

public interface SongService {


	List<Song> selectSongByType(int type);

	List<Song> selectSong(Song songName);

	/**     
	 * @Description:TODO　根据id查找歌曲 src
	 * @author: shuaibizhe
	 * @date:   2018年11月23日 下午4:14:28    
	 * @param songId
	 * @return      
	 */  
	Song selectSongById(int songId);

	/**     
	 * @Description:TODO 点击歌单出现对应歌曲
	 * @author: shuaibizhe
	 * @date:   2018年11月23日 下午8:42:19    
	 * @param listSongUser
	 * @return      
	 */  
	List<SongVos> selectSongByList(ListSongUser listSongUser);


	/**
	 * @Description:TODO查询所有歌曲
	 * @author liujinhui
	 * @date:2018年11月24日下午3:09:35
	 * @return
	 * @throws RuntimeException
	 */
	List<SongVo> selectAllSong(Page page) throws RuntimeException;

	/**     
	 * @Description:TODO热歌榜
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午1:57:43    
	 * @return      
	 */  
	List<Song> selectSongByCounts();

	/**     
	 * @Description:TODO 新歌榜
	 * @author: shuaibizhe
	 * @date:   2018年11月24日 下午2:38:14    
	 * @return      
	 */  
	List<Song> selectSongByCreate();

	
	
	/**
	 * @Description:TODO添加一首歌曲
	 * @author liujinhui
	 * @date:2018年11月24日下午4:17:27
	 * @param song
	 * @throws RuntimeException
	 */
	void mSongAdd(Song song) throws RuntimeException;



	/**     
	 * @Description:TODO 查找歌曲总数
	 * @author: shuaibizhe
	 * @return 
	 * @date:   2018年11月24日 下午4:17:20          
	 */  
	List<Song> selectAllSongCounts();

	/**     
	 * @Description:TODO 热评榜
	 * @author: shuaibizhe
	 * @date:   2018年11月26日 上午9:28:06    
	 * @return      
	 */  
	List<Song> selectSongByComment();
	/**
	 * @Description:TODO 删除一首歌曲
	 * @author liujinhui
	 * @date:2018年11月24日下午6:11:06
	 * @param song
	 * @throws RuntimeException
	 */
	void deleteSongs(Song song) throws RuntimeException;

	/**
	 * @Description:TODO修改歌曲信息
	 * @author liujinhui
	 * @date:2018年11月25日下午2:52:10
	 * @param song
	 * @throws RuntimeException
	 */
	void mSongUpdate(Song song) throws RuntimeException;

	/**
	 * @Description:TODO根据歌手名模糊查找歌曲
	 * @author liujinhui
	 * @date:2018年11月25日下午4:34:08
	 * @param search
	 * @return
	 * @throws RuntimeException
	 */
	List<SongVo> selectSongsBySinger(String search) throws RuntimeException;

	/**
	 * @Description:TODO根据歌曲名模糊查找歌曲
	 * @author liujinhui
	 * @date:2018年11月25日下午4:40:58
	 * @param search
	 * @return
	 * @throws RuntimeException
	 */
	List<SongVo> selectSongsByName(String search) throws RuntimeException;

	/**     
	 * @Description:TODO 查找歌手
	 * @author: shuaibizhe
	 * @date:   2018年11月26日 下午3:12:06    
	 * @param realName
	 * @return      
	 */  
	List<Song> selectSinger(String singer);

	/**     
	 * @Description:TODO 上传歌曲
	 * @author: shuaibizhe
	 * @date:   2018年11月27日 上午10:12:54    
	 * @param song      
	 */  
	void insertSong(Song song);
	/**
	 * @Description:TODO查找待审核的歌曲
	 * @author liujinhui
	 * @date:2018年11月26日上午11:56:20
	 * @return
	 * @throws RuntimeException
	 */
	List<SongVo> selectVatSongs() throws RuntimeException;

	/**
	 * @Description:TODO提交审核歌曲
	 * @author liujinhui
	 * @date:2018年11月26日下午2:08:21
	 * @param ids
	 * @throws RuntimeException
	 */
	void submitSongs(int[] ids) throws RuntimeException;

	/**
	 * @Description:TODO查询所有歌曲
	 * @author liujinhui
	 * @date:2018年11月26日下午2:40:14
	 * @throws RuntimeException
	 */
	List<SongVo> getAllSongs() throws RuntimeException;

	/**
	 * @Description:TODO根据ID查询歌曲
	 * @author liujinhui
	 * @date:2018年11月27日下午2:14:59
	 * @param song
	 * @return
	 * @throws RuntimeException
	 */
	SongVo getSongVoById(SongVo song) throws RuntimeException;
	
	/**
	 * @Description:TODO历史听歌时间
	 * @author: xulisa
	 * @date:   2018年11月27日 上午11:55:27    
	 * @param ltime
	 */
	void ltime(ListenTime ltime);
	
	/**
	 * @Description:TODO历史听歌记录
	 * @author: xulisa
	 * @date:   2018年11月27日 下午2:33:56    
	 * @param userId
	 * @return
	 */
	List<Song> selectHistory(int userId);
	
	


}
